/**
 * 数组转树
 * code 当前节点code
 * parentCode 父节点code
 * @param data
 * @returns
 */
export function arrayToTree(data: { code: string; parentCode: string }[]) {
  const map = new Map();
  const tree: any[] = [];

  // 先把所有节点存入 Map
  data.forEach((item) => map.set(item.code, { ...item, children: [] }));

  // 遍历数据，构建树结构
  data.forEach((item) => {
    if (item.parentCode === "0") {
      tree.push(map.get(item.code));
    } else {
      map.get(item.parentCode)?.children.push(map.get(item.code));
    }
  });
  return tree;
}

/**
 * 找出重复的code
 *
 *  const duplicateCodes = findDuplicateCodes(data);
 *  console.log("重复的code有：", duplicateCodes);
 *
 * @param data
 * @returns
 */
export function findDuplicateCodes(data: { code: string }[]) {
  const codeMap = new Map(); // 用于存储每个code出现的次数
  const duplicates: string[] = []; // 存储重复的code
  // 遍历数据，统计每个code的出现次数
  data.forEach((item) => {
    const code = item.code;
    if (codeMap.has(code)) {
      codeMap.set(code, codeMap.get(code) + 1);
    } else {
      codeMap.set(code, 1);
    }
  });

  // 找出出现次数大于1的code
  codeMap.forEach((count, code) => {
    if (count > 1) {
      duplicates.push(code);
    }
  });
  return duplicates;
}
